import json
from docx2pdf import convert
import os
import win32com.client as win32

with open('config/config.json', 'r', encoding='utf-8') as f:
    config = json.load(f)
input_path = config['input']
output_path = config['output']


def doc_to_docx(input_path):
    # 遍历目录下的所有文件
    for filename in os.listdir(input_path):
        if filename.endswith('.doc'):
            # 构建完整的文件路径
            full_path = os.path.join(input_path, filename)
            # 构建新的 .docx 文件名
            docx_filename = filename.replace('.doc', '.docx')
            docx_full_path = os.path.join(input_path, docx_filename)

            # 初始化 Word 应用程序
            word = win32.gencache.EnsureDispatch('Word.Application')
            word.Visible = False  # 设置 Word 应用程序为不可见

            try:
                # 打开 doc 文件
                doc = word.Documents.Open(full_path)
                # 另存为 docx 格式
                doc.SaveAs(docx_full_path, FileFormat=16)  # 16 是 Word 2007+ 的 DOCX 格式代码
                # 关闭文档，不保存更改（因为我们已经另存为了 .docx）
                doc.Close(False)
                # 删除原 .doc 文件
                os.remove(full_path)
                print(f"Converted {filename} to {docx_filename}")
                # exit(-1)
            except Exception as e:
                print(f"Error converting {filename}: {e}")
                # exit(-1)
            finally:
                # 退出 Word 应用程序
                word.Quit()


# 定义一个函数convert_to_pdf，参数为输入路径和输出路径
def convert_to_pdf(input_path, output_path):
    # 检查输出文件夹是否存在，如果不存在则创建
    if not os.path.exists(output_path):
        os.makedirs(output_path)  # 创建输出文件的路径文件夹
    # 获取输入文件夹中的所有Word文档文件
    files = [f for f in os.listdir(input_path) if f.endswith('.docx')]

    # 遍历每个Word文档文件并转换为PDF
    for file in files:  # file是文件的具体名称
        # 构建输入文件的完整路径
        input_path = os.path.join(input_path, file)

        # 构建输出文件的完整路径（将文件后缀改为.pdf）
        output_file = os.path.splitext(file)[0] + '.pdf'
        output_path = os.path.join(output_path, output_file)

        # 将Word文档转换为PDF
        try:
            convert(input_path, output_path)
        except Exception as e:
            # print('错误')

            exit(-1)


if __name__ == '__main__':
    # doc_to_docx(input_path)
    convert_to_pdf(input_path, output_path)

